﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoBD;
using System.Data.SqlClient;

namespace GAIA_Logica
{
    public class Localidad
    {
        #region Atributos
        /// <summary>
        /// Atributos de la clase
        /// </summary>

        private int _idCanton;
        private int _idDistrito;
        private int _idProvincia;
        private String _nomCanton;
        private String _nomDistrito;
        private String _nomProvincia;

        #endregion

        #region getters and setters

        public int IdCanton
        {
            get { return _idCanton; }
            set { _idCanton = value; }
        }

        public int IdDistrito
        {
            get { return _idDistrito; }
            set { _idDistrito = value; }
        }

        public int IdProvincia
        {
            get { return _idProvincia; }
            set { _idProvincia = value; }
        }

        public String NomCanton
        {
            get { return _nomCanton; }
            set { _nomCanton = value; }
        }

        public String NomDistrito
        {
            get { return _nomDistrito; }
            set { _nomDistrito = value; }
        }

        public String NomProvincia
        {
            get { return _nomProvincia; }
            set { _nomProvincia = value; }
        }

        //Conexion a base de datos
        private AcessoBD dba = new AcessoBD(Properties.Settings.Default.GAIA_CON);

        #endregion

        #region Metodos


        //Listado de provincias
        public List<Localidad> getAllProvincias()
        {

            List<Localidad> listaLocalidad = new List<Localidad>();

            try
            {

                //Query
                String sqlQuery = "select id, nombre from Provincias";
                SqlDataReader rs = dba.execute_Consulta(sqlQuery, null);

                if(rs!=null){

                    while (rs.Read()) {
                        Localidad objLoc = new Localidad();
                        objLoc.IdProvincia=rs.GetInt32(rs.GetOrdinal("id"));
                        objLoc.NomProvincia = rs.GetString(rs.GetOrdinal("nombre"));
                        listaLocalidad.Add(objLoc);
                    }
                
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error a la hora de obtener las provincias:" + ex.Message);
            }

            return listaLocalidad;

        }

        //Listado de cantones por provincia
        public List<Localidad> getCantonesPro(int idPro)
        {

            List<Localidad> listaLocalidad = new List<Localidad>();

            try
            {

                //Query
                String sqlQuery = "select id,nombre from Cantones where id_provincia="+idPro;
                SqlDataReader rs = dba.execute_Consulta(sqlQuery, null);

                if (rs != null)
                {

                    while (rs.Read())
                    {
                        Localidad objLoc = new Localidad();
                        objLoc.IdCanton = rs.GetInt32(rs.GetOrdinal("id"));
                        objLoc.NomCanton = rs.GetString(rs.GetOrdinal("nombre"));
                        listaLocalidad.Add(objLoc);
                    }

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error a la hora de obtener los cantones:" + ex.Message);
            }

            return listaLocalidad;

        }


        //Listado de idstritos por canton
        public List<Localidad> getDistritosCanton(int idCant)
        {

            List<Localidad> listaLocalidad = new List<Localidad>();

            try
            {

                //Query
                String sqlQuery = "select id,nombre from Distritos where id_canton=" + idCant;
                SqlDataReader rs = dba.execute_Consulta(sqlQuery, null);

                if (rs != null)
                {

                    while (rs.Read())
                    {
                        Localidad objLoc = new Localidad();
                        objLoc.IdDistrito = rs.GetInt32(rs.GetOrdinal("id"));
                        objLoc.NomDistrito = rs.GetString(rs.GetOrdinal("nombre"));
                        listaLocalidad.Add(objLoc);
                    }

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error a la hora de obtener los distritos:" + ex.Message);
            }

            return listaLocalidad;

        }

        //getLocalidad por distrito

        public void getLocalicaXDistrito(int idDistrito) {

            string sqlQuery = "SELECT  a.id as codigo_dist, a.nombre as nombre_dist,b.id as id_cant , b.nombre as nombre_cant,c.id as id_prov , c.nombre  as nombre_prov" +
                           " FROM  Distritos a, Cantones b, Provincias c " +
                           " WHERE " +
                           " a.id_canton=b.id " +
                           " and b.id_provincia=c.id" +
                           " and a.id=" + idDistrito;

            try
            {
                SqlDataReader rs=dba.execute_Consulta(sqlQuery, null);

                if (rs != null && rs.Read()) {

                    this.IdDistrito = rs.GetInt32(rs.GetOrdinal("codigo_dist"));
                    this.NomDistrito = rs.GetString(rs.GetOrdinal("nombre_dist"));
                    this.IdCanton = rs.GetInt32(rs.GetOrdinal("id_cant"));
                    this.NomCanton = rs.GetString(rs.GetOrdinal("nombre_cant"));
                    this.IdProvincia = rs.GetInt32(rs.GetOrdinal("id_prov"));
                    this.NomProvincia = rs.GetString(rs.GetOrdinal("nombre_prov"));
                }

            }
            catch (Exception ex) {
                throw new Exception("Ocurrio un error a la hora de obtener la localidad: " + ex.Message);
            }

        }

        #endregion

    }
}
